<?php

class Mparaderos extends CI_Model {

    function __construct() {
        //llamando al constructor
        parent::__construct();
    }

    function getEmpresas() {
        $query = "select idmempresa,CONCAT(viniciales,' - ',vnombre) as empresa from mempresa ";
        //$query.="where id_prov=0";
        $tabla = $this->db->query($query);
        return $tabla->result_array();
    }

    function getLineas($idEmpresa) {
        $query = "select idmlinea,vlinea from mlinea ";
        $query.="where idmempresa=$idEmpresa ";
        $tabla = $this->db->query($query);
        return $tabla->result_array();
    }

    function getRutas($idLinea) {
        $query = "select a.idmruta, b.vtipo_ruta from mruta a ";
        $query.="inner join mtipo_ruta b on a.idmtipo_ruta=b.idmtipo_ruta ";
        $query.="where a.idmlinea=$idLinea ";
        $tabla = $this->db->query($query);
        return $tabla->result_array();
    }

    function getParaderos($idRuta) {
        $query = "select a.iddparaderos,a.iorden,a.vnombre_paradero,a.ngps_latitud1,a.ngps_longitud1, 
            a.idmtipoparadero,b.vnombreTipo,a.ndistanciaParadero
            from dparaderos a 
            inner join mtipoparadero b on a.idmtipoparadero=b.idmtipoparadero ";
        $query.="where a.iestado=1 and a.idmruta=$idRuta order by a.iorden";
        $tabla = $this->db->query($query);
        //echo $query."<br>";
        return $tabla->result_array();
    }

    function getParaderosRestantes($idParadero) {
        $query = "  select a.iddparaderos,a.iorden,a.vnombre_paradero,a.ngps_latitud1,a.ngps_longitud1 
            from dparaderos a
            where a.iestado=1 and a.idmruta=(select b.idmruta from dparaderos b where b.iddparaderos= $idParadero)
            and a.iorden>=(select c.iorden from dparaderos c where c.iddparaderos=$idParadero) and a.iorden>0 
            order by a.iorden asc
                ";
        //echo $query."<br>";
        $tabla = $this->db->query($query);
        if ($tabla->num_rows() == 0) {
            $resultado = array();
        } else {
            $resultado = $tabla->result_array();
        }
        return $resultado;
    }
    function rangoParaderos($paraderoInicial,$paraderoFinal){
             $query = "  select a.iddparaderos,a.iorden,a.idmruta,a.idmtipoparadero,a.ndistanciaParadero ,
              a.ngps_latitud1,a.ngps_longitud1
            from dparaderos a
            where a.iestado=1 and a.idmruta=(select b.idmruta from dparaderos b where b.iddparaderos=$paraderoInicial)
            and a.iorden>=(select c.iorden from dparaderos c where c.iddparaderos=$paraderoInicial) 
            and a.iorden<=(select c.iorden from dparaderos c where c.iddparaderos=$paraderoFinal)
            and a.iorden>0 order by a.iorden desc;
                ";
        //echo $query."<br>";
        $tabla = $this->db->query($query);
        if ($tabla->num_rows() == 0) {
            $resultado = array();
        } else {
            $resultado = $tabla->result_array();
        }
        return $resultado;
    }
    function getParaderosCelular($vnumero) {
        $query = "select d.idmruta,c.idmtipo_ruta,d.iorden,vnombre_paradero,ngps_latitud1,ngps_longitud1 from dtransporte_linea a
        inner join mcelulares b on a.idmcelulares_predeterminado=b.idmcelulares
        inner join mruta c on c.idmlinea=a.idmlinea 
        inner join dparaderos d on c.idmruta=d.idmruta
        where d.iestado=1 and b.vnumero='$vnumero' order by c.idmtipo_ruta,d.iorden";
        $tabla = $this->db->query($query);
        //echo $query."<br>";
        return $tabla->result_array();
    }

    function getDatosRuta($idRuta) {
        $query = "select a.idmruta,concat (d.vnombre,' - ',d.viniciales) nombre, c.vlinea, b.vtipo_ruta 
                    from mruta a
                    inner join mtipo_ruta b on a.idmtipo_ruta=b.idmtipo_ruta
                    inner join mlinea c on a.idmlinea=c.idmlinea
                    inner join mempresa d on c.idmempresa=d.idmempresa
                    where idmruta=$idRuta";

        $tabla = $this->db->query($query);
        return $tabla->result_array();
    }

    function nuevoParadero($data) {
        $iorden = $data['iorden'];
        $idmruta = $data['idmruta'];
        $idTipoParadero = $data['idmtipoparadero'];
        $data['idusuario'] = 1;
        $data['vhost'] = $_SERVER['REMOTE_ADDR'];
        $data['iestado'] = 1;
        if ($idTipoParadero == 3) {
            $data['iorden'] = 0;
        } else {
            $query = "select max(iOrden)maximo from dparaderos where idmruta=$idmruta";
            $resultado = $this->db->query($query);
            if ($resultado->num_rows() > 0) {
                $row = $resultado->row_array();
                $maximo = $row['maximo'];
            } else {
                $maximo = 0;
            }
            if ($maximo < $iorden) {
                $data['iorden'] = $maximo + 1;
            } else {

                $query = "update dparaderos
                set iorden=iorden+1
                where idmruta=$idmruta and iorden>=$iorden";
                $this->db->query($query);
            }
        }


        $this->db->insert('dparaderos', $data);
        return $this->db->insert_id();
    }

    function paraderoMaximo($idRuta) {
        $query = "select max(iOrden)maximo from dparaderos where idmruta=$idRuta";
        $resultado = $this->db->query($query);
        if ($resultado->num_rows() > 0) {
            $row = $resultado->row_array();
            $maximo = $row['maximo'];
        } else {
            $maximo = 0;
        }
        return $maximo;
    }

    function eliminarParadero($idParadero) {
        //falta transacciones

        $query = "select idmruta,iOrden, idmtipoparadero from dparaderos where iddparaderos=$idParadero";
        $resultado = $this->db->query($query);
        if ($resultado->num_rows() > 0) {
            $row = $resultado->row_array();
            $iorden = $row['iOrden'];
            $idmruta = $row['idmruta'];
            $tipoParadero = $row['idmtipoparadero'];
        }
        if ($tipoParadero != 3) {
            $query = "update dparaderos
                set iorden=iorden-1
                where idmruta=$idmruta and iorden >=$iorden";
            $this->db->query($query);
        }


        $query = "update dparaderos
                    set iestado=0
                  where iddparaderos=$idParadero";
        $this->db->query($query);
    }

    function getDatosParadero($idParadero) {
        $query = "select iddparaderos,iorden,vnombre_paradero,ngps_latitud1,ngps_longitud1, 
                  idmtipoparadero,inumeropartes,iestadotomatiempo from dparaderos
                  where iddparaderos=$idParadero";
        //echo $query;
        $tabla = $this->db->query($query);

        return $tabla->result_array();
    }

    function editarParadero($data) {
        $iorden = $data['iorden'];
        $idmruta = $data['idmruta'];
        $idParadero = $data['idParadero'];
        $vnombre_paradero = $data['vnombre_paradero'];
        $ngps_latitud1 = $data['ngps_latitud1'];
        $ngps_longitud1 = $data['ngps_longitud1'];
        $idTipoParadero = $data['idmtipoparadero'];
        if ($idTipoParadero == 3) {
            $data['iorden'] = 0;
            $iorden = 0;
        } else {
            $query = "select max(iOrden)maximo from dparaderos 
            where iestado=1 and idmruta=$idmruta";
            $resultado = $this->db->query($query);
            if ($resultado->num_rows() > 0) {
                $row = $resultado->row_array();
                $maximo = $row['maximo'];
            } else {
                $maximo = 0;
            }
            if ($maximo < $iorden) {
                $data['iorden'] = $maximo;
                $iorden = $maximo;
            }
        }

        //hallamos el numero de orden
        $query = "select iOrden from dparaderos 
        where iestado=1 and iddparaderos=$idParadero";
        $resultado = $this->db->query($query);
        if ($resultado->num_rows() > 0) {
            $row = $resultado->row_array();
            $iordenAux = $row['iOrden'];
        }
        if ($iordenAux != 0) {
            $query = "update dparaderos
                set iorden=iorden-1
                where iestado=1 and idmruta=$idmruta and iorden >=$iordenAux";
            $this->db->query($query);
        }

        if ($iorden != 0) {
            $query = "update dparaderos
                set iorden=iorden+1
                where iestado=1 and idmruta=$idmruta and iorden>=$iorden";
            $this->db->query($query);
        }



        $query = "update dparaderos
                set iorden=$iorden ,
                vnombre_paradero='$vnombre_paradero',
                ngps_latitud1 = $ngps_latitud1,
                ngps_longitud1 = $ngps_longitud1,
                idmtipoparadero = $idTipoParadero
                where iestado=1 and iddparaderos=$idParadero";
        $this->db->query($query);
        return $idParadero;
    }

    function siguienteParadero($idParadero) {
        $query = "select a.iddparaderos from dparaderos a
            where a.iestado=1 and a.idmruta=(select b.idmruta from dparaderos b where b.iddparaderos=$idParadero)
            and a.iorden-1=(select c.iorden from dparaderos c where c.iddparaderos=$idParadero) ";
        $tabla = $this->db->query($query);
        if ($tabla->num_rows() == 0) {
            $id = 0;
        } else {
            $resultado = $tabla->result_array();
            $id = $resultado[0]['iddparaderos'];
        }
        return $id;
    }

    function paraderoAnterior($idParadero) {
        $query = "select a.iddparaderos from dparaderos a
            where a.iestado=1 and a.idmruta=(select b.idmruta from dparaderos b where b.iddparaderos=$idParadero)
            and a.iorden+1=(select c.iorden from dparaderos c where c.iddparaderos=$idParadero) and a.iorden>0 ";
        $tabla = $this->db->query($query);
        if ($tabla->num_rows() == 0) {
            $id = 0;
        } else {
            $resultado = $tabla->result_array();
            $id = $resultado[0]['iddparaderos'];
        }
        return $id;
    }

    function paraderosAnteriores($paradero1) {
        $query = "select a.iddparaderos,a.iorden,a.idmruta,a.idmtipoparadero,a.ndistanciaParadero ,
              a.ngps_latitud1,a.ngps_longitud1 from dparaderos a
            where a.iestado=1 and a.idmruta=(select b.idmruta from dparaderos b where b.iddparaderos=$paradero1)
            and a.iorden<=(select c.iorden from dparaderos c where c.iddparaderos=$paradero1) and a.iorden>0 order by a.iorden desc
                ";
        //echo $query."<br>";
        $tabla = $this->db->query($query);
        if ($tabla->num_rows() == 0) {
            $resultado = array();
        } else {
            $resultado = $tabla->result_array();
        }
        return $resultado;
    }
    function sumaDistancias($idparadero){
        $query = "select sum(a.ndistanciaParadero) as suma from dparaderos a
        where a.iestado=1 and a.idmruta=(select b.idmruta from dparaderos b where b.iddparaderos=$idparadero)
        and a.iorden<=(select c.iorden from dparaderos c where c.iddparaderos=$idparadero) 
        and a.iorden>0 ";
        $tabla = $this->db->query($query);
        if ($tabla->num_rows() == 0) {
            $suma = 0;
        } else {
            $resultado = $tabla->result_array();
            $suma = $resultado[0]['suma'];
        }
        return $suma;
    }
    function guardaDistanciaParaderoAnterior($distancia, $id) {
        $query = "update dparaderos
                set ndistanciaParadero=$distancia
                where iestado=1 and iddparaderos=$id";
        $this->db->query($query);
    }

    function getRutasCelular($celular) {


        $query = "select c.idmruta,a.iddtransporte_linea,b.idmcelulares from dtransporte_linea a
            inner join mcelulares b on a.idmcelulares_predeterminado=b.idmcelulares
            inner join mruta c on a.idmlinea=c.idmlinea
            where b.vnumero='$celular' and a.iestado=1
                ";
        //echo $query."<br>";
        $tabla = $this->db->query($query);
        if ($tabla->num_rows() == 0) {
            $resultado = array();
        } else {
            $resultado = $tabla->result_array();
        }
        return $resultado;
    }

    function getTipoParadero() {
        $query = "select idmtipoparadero,vnombreTipo from mtipoparadero";
        //echo $query;
        $tabla = $this->db->query($query);

        return $tabla->result_array();
    }
    function getParaderoControl($paradero1){
        $query = "select iddparaderos,ngps_latitud1,ngps_longitud1,vnombre_paradero,iorden,idmruta from dparaderos 
            where idmruta in (select idmruta from dparaderos where iddparaderos=$paradero1)
            and iestado=1 and idmtipoparadero=2 and iorden <= (select iorden from dparaderos where iddparaderos=$paradero1)
            order by iorden desc limit 1
                ";
        //echo $query."<br>";
        $tabla = $this->db->query($query);
        if ($tabla->num_rows() == 0) {
            $resultado = array();
        } else {
            $resultado = $tabla->result_array();
        }
        return $resultado;
    }
    function gettiempoParaderos($idmruta){
        $query = "select a.iddparaderos,a.vnombre_paradero,a.iorden,a.ndistanciaParadero,a.idmtipoparadero,
                b.dtiempos from dparaderos a
                inner join dtiemposParaderos b on a.iddparaderos=b.iddparaderos 
                where a.idmruta=$idmruta order by iorden
                ";
        //echo $query."<br>";
        $tabla = $this->db->query($query);
        if ($tabla->num_rows() == 0) {
            $resultado = array();
        } else {
            $resultado = $tabla->result_array();
        }
        return $resultado;
    }
    
}

?>
